Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Any) As Long
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Public Const GENERIC_READ = &H80000000
Public Const FILE_SHARE_READ = &H1
Public Const OPEN_EXISTING = 3
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const GMEM_MOVEABLE = &H2
Public Const GMEM_SHARE = &H2000
Public Const CD_ACTION_OPEN = 1
Public Const dws_NOSUCCESS = 0
Type SoundInfo
FileName As String
Handle As Long
soundnum As Integer
Rate As Integer
End Type
Global dws_DR As dws_DETECTRESULTS
Global dws_ID As dws_IDEAL
Global dws_DP As dws_DPlay
Global dws_MP As dws_MPlay
Global giNumSounds As Integer
Global gtSI() As SoundInfo
Global gPlay As dws_DPlay
Public Sub dwsShowError()
' An error has occurred! Show it!
Dim iError As Integer
Dim sError As String
iError = dws_ErrNo()
Select Case iError
Case dws_NOTINITTED
sError = "Not Initialized"
Case dws_ALREADYINITTED
sError = "Already Initialized"
Case dws_NOTSUPPORTED
sError = "Not Supported"
Case dws_INTERNALERROR
sError = "Internal Error"
Case dws_INVALIDPOINTER
sError = "Invalid Pointer"
Case dws_RESOURCEINUSE
sError = "Resource In Use"
Case dws_MEMORYALLOCFAILED
sError = "Memory Alloc Failed"
Case dws_SETEVENTFAILED
sError = "Set Event Failed"
Case dws_BUSY
sError = "Busy"
Case dws_Init_BUFTOOSMALL
sError = "Buffer Too Small"
Case dws_D_NOTADWD
sError = "Not a DWD"
Case dws_D_NOTSUPPORTEDVER
sError = "Not Supported Version"
Case dws_D_BADDPLAY
sError = "Bad (D) Play"
Case dws_DPlay_NOSPACEFORSOUND
sError = "No Space For Sound"
Case dws_WAV2DWD_NOTAWAVE
sError = "Not A Wave"
Case dws_WAV2DWD_UNSUPPORTEDFORMAT
sError = "Unsupport Format"
Case dws_M_BADMPLAY
sError = "Bad (M) Play"
Case Else
sError = "<unknown #" + CStr(iError) + ">"
End Select
MsgBox "Error '" + sError + "' occurred!"
End Sub
Public Function dwsPlayWave(piIndex As Integer, Optional vCount As Variant) As Boolean
' This procedure plays a loaded wave by using the passed
' memory handle.
Dim tPlay As dws_DPlay
Dim iStatus As Integer
LSet tPlay = gPlay
tPlay.snd = gtSI(piIndex).Handle
If Not IsMissing(vCount) Then
tPlay.count = CInt(vCount)
Else
tPlay.count = 1
End If
tPlay.flags = dws_dplay_SND Or dws_dplay_COUNT Or dws_dplay_LVOL Or dws_dplay_RVOL Or dws_dplay_PITCH
iStatus = dws_DPlay(tPlay)
gtSI(piIndex).soundnum = tPlay.soundnum
If iStatus = 0 Then
dwsShowError
Exit Function
End If
' MIDI?!
' mPlay.track = (UCHAR*)buffer;
' mPlay.count = 1;
' status = dws_MPlay(&mPlay);
dwsPlayWave = True
End Function
Public Function dwsLoadWave(psFileName As String) As Integer
' This procedure loads the passed WAVE file and
' prepares it for use with the WinSTK. It returns the INDEX of gtSI()